package com.ssm.sport.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ssm.sport.entity.Product;

import java.util.List;

/**
 * 商品服务接口
 */
public interface ProductService extends IService<Product> {
    
    /**
     * 根据关键字搜索商品
     * @param keyword 关键字
     * @param page 分页参数
     * @return 商品列表
     */
    IPage<Product> searchProducts(String keyword, Page<Product> page);
    
    /**
     * 获取热门商品
     * @param limit 数量限制
     * @return 热门商品列表
     */
    List<Product> getHotProducts(int limit);
    
    /**
     * 获取新品
     * @param limit 数量限制
     * @return 新品列表
     */
    List<Product> getNewProducts(int limit);
    
    /**
     * 根据分类获取商品
     * @param categoryId 分类ID
     * @param page 分页参数
     * @return 商品列表
     */
    IPage<Product> getProductsByCategory(Integer categoryId, Page<Product> page);
    
    /**
     * 根据分类获取商品列表（带排序）
     * @param categoryId 分类ID
     * @param page 分页参数
     * @param sort 排序方式（默认，价格升序，价格降序，销量）
     * @return 商品分页列表
     */
    IPage<Product> getProductsByCategory(Integer categoryId, Page<Product> page, String sort);
    
    /**
     * 获取相关商品推荐
     * @param productId 当前商品ID
     * @param categoryId 分类ID
     * @param limit 数量限制
     * @return 相关商品列表
     */
    List<Product> getRelatedProducts(Integer productId, Integer categoryId, int limit);
    
    /**
     * 获取商品库存总数
     * @return 库存总数
     */
    Long getTotalStock();
} 